// function tplReplace(tpl, replaceObject) {
//     tpl.replace(/{{(.*?)}}/g, function(node, key) {
//         return replaceObject[key]
//     })
// };
/**简写上面的模板匹配方法 */
/**模板匹配 */
function tplReplace(tpl, replaceObject) {
    return tpl.replace(/{{(.*?)}}/g, (node, key) => replaceObject[key])
}

/**出除空格*/
function trimSpaces (str) {
	return str.replace(/\s+/g, '');
}

/**获取浏览器地址栏中url跟随的参数*/
function getUrlQueryValue(key) {
    const reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i'),
          res = window.location.search.substr(1).match(reg);

    return res != null ? decodeURIComponent(res[2]) : null;
}

/**
 * 节流函数  
 * fn：需要节流的函数  
 * delay：延时多久才开始执行  
 */
function throttle(fn, delay) {
    var t = null,
        begin = new Date().getTime();

    return function() {
        var _self = this,
            args = arguments,
            cur = new Date().getTime();

        clearTimeout(t);

        if(cur - begin >= delay) {
            fn.apply(_self, args);
            begin = cur;
        } else {
            t = setTimeout(function() {
                fn.apply(_self, args);
            }, delay);
        }
    }
}

/**
 * 获取当前时间
 */
function getDateTime() {
    const date = new Date();

    let year = date.getFullYear(),
        month = addZero(date.getMonth() + 1),
        day = addZero(date.getDate()),
        hours = addZero(date.getHours()),
        minutes = addZero(date.getMinutes()),
        seconds = addZero(date.getSeconds());

    function addZero(value) {
        return value < 10 ? ('0' + value) : value;
    }

    return year + '-' + month + '-' + day + '  ' + hours + ':' + minutes + ':' + seconds;
}

function setRandomNo(num) {
    let no = '0';

    for (let i = 0; i < num; i++) {
        no += Math.floor(Math.random() * 10);
    }

    return new Date().getTime() + no;
}

/*
*获取元素样式属性,比如获取到某个div相对整个文档的top值和left值、自身的width值，Height值
*/
function getStyles(elem, prop){
    if (window.getComputedStyle) {
      if (prop) {
        return parseInt(window.getComputedStyle(elem, null)[prop]);
      }else{
        return window.getComputedStyle(elem, null);
      }
    }else{
      if (prop) {
         return parseInt(elem.currentStyle[prop]);// IE用这个，其他浏览器用上面的
      }else{
         return elem.currentStyle;
      }
    }
}

/*
*获取鼠标位置相对于整个文档的坐标（包含滚动条距离）
*/
function pagePos(e){
    var sLeft = getScrollOffset().left,
        sTop = getScrollOffset().top,                     //（浏览器默认的margin有8像素或者16像素这样的）
        cLeft = document.documentElement.clientLeft || 0, //文档偏移值。 IE8及以上没有这个东西
        cTop = document.documentElement.clientTop || 0;
 
     return {
       X: e.clientX + sLeft - cLeft,
       Y: e.clientY + sTop - cTop
     }
}

/*
*获取浏览器滚动条滚动距离
*/
function getScrollOffset(){
    if (window.pageXOffset) {
      return {
        top: window.pageXOffset,
        left: window.pageYOffset
      }
    }else{
      return {
        top: document.body.scrollTop + document.documentElement.scrollTop,
        left: document.body.scrollLeft + document.documentElement.scrollLeft
      }
    }
}

module.exports = {
    tplReplace,
    trimSpaces,
    getUrlQueryValue,
    throttle,
    getDateTime,
    setRandomNo,
    getStyles,
    pagePos,
    getScrollOffset
}